home *** CD-ROM | disk | FTP | other *** search
/ Compendium Deluxe 2 / LSD and 17bit Compendium Deluxe - Volume II.iso / a / prog / asmsrc / vectorscope.lha / Vectors01a9.s < prev   
Text File  |  1987-09-30  |  21KB  |  1,196 lines

  1.  
  2.  
  3.     Opt    o+,c-
  4.  
  5.     Include ReeboKVectors:CustomRegisters
  6.     Section    Cube,Code_c
  7.  
  8. Ciaapra = $BFE001
  9. Disable        = -120
  10. Enable        = -126
  11. Startlist   = 38
  12. Speed1        equ    2    ;noumber of pixels star one moves per frame
  13. Speed2        equ    2    ;noumber of pixels star two moves per frame
  14. Speed3        equ    3    ;noumber of pixels star three moves per frame
  15. Speed4        equ    3    ;noumber of pixels star four moves per frame
  16. VScrollPause    equ    200    ;no. frames vscroll pauses for
  17. ScrollHeight    equ    72    ;no. lines to scroll at a time
  18. VScrollPages    equ    3*2880    ;no. of page of VScroll Text
  19.  
  20.     move.l    #$0,$0.w
  21.     Move.l    $4.w,a6
  22.     Jsr    Disable(a6)
  23.  
  24.  
  25.     Move.l    #$60000,a0
  26.     Move.w    #$5000,d0
  27. again
  28.     Clr.l    (a0)+
  29.     Dbf    d0,again    
  30. ;    Jsr    mt_init
  31.     Jsr    InitStars
  32.     Jsr    InitLogo
  33.     Jsr    InitVScroll
  34.     Move.l    #Showplane,d0
  35.     swap    d0
  36.     Move.w    d0,Sine+2
  37.     swap    d0
  38.     Move.w    d0,Sine+6
  39.     Move.l    #Clstart,Cop1lc
  40.     Clr    Copjmp1
  41.  
  42.     Move.w    #$84a0,Dmacon
  43.     Lea    Spr3data,a0
  44.     Moveq    #4,d0
  45. Clop
  46.     Clr.l    (a0)
  47.     Addq.l    #8,a0
  48.     Dbf    d0,Clop
  49. T
  50.  
  51. Wait:    Move.l    $dff004,d2
  52.     And.l    #$0001ff00,d2    
  53.     Cmp.l    #$00000100,d2
  54.     Bne.s    Wait
  55.  
  56.     Btst    #10,$dff016
  57.     Beq.s    Wait
  58.     Bsr    MoveStars
  59.     Bsr    VScroll
  60.     jsr    scrolly
  61.     Jsr    BlitClear
  62. ;    Bsr    mt_music
  63.     Bsr    UpdateLetter
  64.  
  65.     Btst    #6,Ciaapra
  66.     Bne.s    Wait
  67. ;    jsr    mt_end
  68.  
  69.     Move.l    $4.w,a6
  70.     Move.l    #Grname,a1
  71.     Clr.l    d0
  72.     Jsr    -552(a6)
  73.     Move.l    d0,a4
  74.     Move.l    d0,GrBase
  75.     Move.l    Startlist(a4),Cop1lc
  76.     Clr.w    Copjmp1
  77.     Move.w    #$84a0,Dmacon
  78.  
  79.     Move.l    $4.w,a6
  80.     Move.l    GrBase,a1
  81.     Jsr    -414(a6)
  82.  
  83.     Jsr    Enable(a6)
  84.     Clr.l    d0
  85.     Rts
  86.  
  87.  
  88. InitVScroll:
  89.     LEA    text(pc),A0
  90.     clr.l    d2
  91.     LEA    $62800,a1
  92. lp1:    clr.l    d0
  93.     move.b    (a0,d2),d0
  94.     sub.b    #32,d0
  95.     mulu    #8,d0
  96.     move.l    d0,a2
  97.     add.l    #chars,a2
  98.     move.b    (a2),(a1)
  99.     move.b    1(a2),40(a1)
  100.     move.b    2(a2),80(a1)
  101.     move.b    3(a2),120(a1)
  102.     move.b    4(a2),160(a1)
  103.     move.b    5(a2),200(a1)
  104.     move.b    6(a2),240(a1)
  105.     move.b    7(a2),280(a1)
  106.     addq.l    #1,a1
  107.     clr.l    d0
  108.     clr.l    d1
  109.     move.w    d2,d0
  110.     move.w    d2,d1
  111.     divu    #40,d0
  112.     mulu    #40,d0
  113.     sub.w    d0,d1
  114.     tst.w    d1
  115.     bne.s    next
  116.     add.l    #280,a1
  117. next:    addq.w    #1,d2
  118.     cmp.w    #40*21,d2
  119.     bne.s    lp1
  120.     rts
  121.  
  122. UpdateLetter:
  123.     Cmpi.l    #0,(a0)
  124.     Bne.s    NoChange
  125.     Cmpi.b    #0,(a0)
  126.     Cmpi.b    #1,(a0)
  127.  
  128. NoChange
  129.     Subq.l    #1,(a0)
  130.     Rts
  131.  
  132. VScroll:
  133.     Lea    ScrollPause,a0
  134.     Cmpi.w    #0,(a0)
  135.     Bne.s    DecPause
  136.     Lea    ScrollCount,a0
  137.     Cmpi.w    #0,(a0)
  138.     Beq.s    InitPause
  139.     Lea    VS1,a0
  140.     Cmpi.w    #$49c0,(a0)
  141.     bne.s    Nxt
  142.     Move.w    #$1cc0,(a0)
  143. Nxt    add.w    #40,(a0)
  144.     Lea    VS2,a0
  145.     Cmpi.w    #$49e8,(a0)
  146.     bne.s    Cont
  147.     Move.w    #$1ce8,(a0)
  148. Cont    add.w    #40,(a0)
  149.     Subq.w    #1,ScrollCount
  150.     rts    
  151.  
  152. Decpause:
  153.     subq.w    #1,(a0)
  154.     Move.w    #ScrollHeight,ScrollCount
  155.     rts
  156.  
  157. InitPause:
  158.     move.w    #VScrollPause,ScrollPause
  159.     rts
  160.  
  161. ScrollPause:
  162.     dc.w    0
  163. ScrollCount:
  164.     dc.w    72
  165.     even
  166.  
  167. Text:    ;    '1234567890123456789009876543210987654321'
  168.     dc.b    '            cc  INNERCITY cc            '
  169.     DC.B    '               THE NEW AGE              '
  170.     DC.B    '                                        '
  171.     DC.B    '    PROUDLY PRESENT A NEW PRODUCTION    '
  172.     DC.B    '                 CALLED                 '
  173.     DC.B    '                                        '
  174.     DC.B    '              VECTOR-SCOPE              '
  175.     DC.B    '                                        '
  176.     DC.B    '                                        '
  177.     DC.B    ' CREDITS FOR THIS MEGA NICE DEMO GO TO  '
  178.     DC.B    '                                        ' 
  179.     DC.B    '     CODING..................REEBOK     '
  180.     DC.B    '                                        '
  181.     DC.B    '     GRAPHIC DESIGN...........EDDIE     '
  182.     DC.B    '                                        '
  183.     DC.B    '     MUSIC...................MOZART     '
  184.     DC.B    '                                        '
  185.     DC.B    '                                        ' 
  186.     DC.B    ' CREDITS ARE DONE SO HOW ABOUT A BIT OF '
  187.     DC.B    '            VERTICAL SCROLLY            '
  188.     DC.B    '                                        '
  189.     even
  190.  
  191. InitLogo:
  192.     
  193.     lea    Logo,a0
  194.     move.l    a0,d0
  195.     move.w    d0,Plane1+6
  196.     swap    d0
  197.     move.w    d0,Plane1+2
  198.  
  199.     lea    Logo,a0
  200.     move.l    a0,d0
  201.     add.w    #$a50,d0
  202.     move.w    d0,Plane2+6
  203.     swap    d0
  204.     move.w    d0,Plane2+2
  205.  
  206.     lea    Logo,a0
  207.     move.l    a0,d0
  208.     add.w    #$14a0,d0
  209.     move.w    d0,Plane3+6
  210.     swap    d0
  211.     move.w    d0,Plane3+2
  212.  
  213.     lea    Logo,a0
  214.     move.l    a0,d0
  215.     add.w    #$1ef0,d0
  216.     move.w    d0,Plane4+6
  217.     swap    d0
  218.     move.w    d0,Plane4+2
  219.     rts
  220.  
  221. InitStars:
  222.     
  223.     lea    sprite1,a0
  224.     move.l    a0,d0
  225.     move.w    d0,spr1+6
  226.     swap    d0
  227.     move.w    d0,spr1+2
  228.  
  229.     lea    sprite2,a0
  230.     move.l    a0,d0
  231.     move.w    d0,spr2+6
  232.     swap    d0
  233.     move.w    d0,spr2+2
  234.  
  235.     lea    sprite3,a0
  236.     move.l    a0,d0
  237.     move.w    d0,spr3+6
  238.     swap    d0
  239.     move.w    d0,spr3+2
  240.  
  241.     lea    sprite4,a0
  242.     move.l    a0,d0
  243.     move.w    d0,spr4+6
  244.     swap    d0
  245.     move.w    d0,spr4+2
  246.  
  247.     rts
  248.  
  249. MoveStars:
  250.     movem.l    d0-d7/a0-a6,-(sp)
  251.     lea    Sprite1+1,a1
  252.     lea    Sprite2+1,a2
  253.     lea    Sprite3+1,a3
  254.     lea    Sprite4+1,a4
  255.     moveq.l    #59,d0        ;no. of stars in each plane
  256. loop:
  257.     cmpi.b    #$dd,(a1)
  258.     bls.s    a1
  259.     move.b    #$2b,(a1)
  260. a1    cmpi.b    #$2b,(a2)
  261.     bhs.s    a2
  262.     move.b    #$dd,(a2)
  263. a2    cmpi.b    #$dd,(a3)
  264.     bls.s    a3
  265.     move.b    #$2b,(a3)
  266. a3    cmpi.b    #$2b,(a4)
  267.     bhs.s    a4
  268.     move.b    #$dd,(a4)
  269. a4    addq.b    #Speed1,(a1)
  270.     subq.b    #Speed2,(a2)
  271.     addq.b    #Speed3,(a3)
  272.     subq.b    #Speed4,(a4)
  273.     addq.w    #8,a1
  274.     addq.w    #8,a2
  275.     addq.w    #8,a3
  276.     addq.w    #8,a4
  277.     dbf    d0,loop
  278.     movem.l    (sp)+,d0-d7/a0-a6
  279.     rts
  280.  
  281.  
  282. Grname:    Dc.b    "graphics.library",0
  283.     Even
  284. GrBase:    Dc.l    0
  285.  
  286.  
  287. Clstart:
  288.     dc.w    $1401,$ff00
  289.     dc.w    $0100,$0000
  290.     dc.w    $0102,$0000
  291.     dc.w    $0104,$0064
  292.     dc.w    $0108,$0000
  293.     dc.w    $010a,$0000
  294.     dc.w    $0180,$0000
  295.     dc.w    $008e,$2971
  296.     dc.w    $0090,$29d1
  297.     dc.w    $0092,$0030
  298.     dc.w    $0094,$00d8
  299. Spr1:    dc.w    $0120,$0000,$0122,$0000
  300. Spr2:    dc.w    $0124,$0000,$0126,$0000
  301. Spr3:    dc.w    $0128,$0000,$012a,$0000
  302. Spr4:    dc.w    $012c,$0000,$012e,$0000
  303. Spr5:    dc.w    $0130,$0000,$0132,$0000
  304. Spr6:    dc.w    $0134,$0000,$0136,$0000
  305. Spr7:    dc.w    $0138,$0000,$013a,$0000
  306. Spr8:    dc.w    $013c,$0000,$013e,$0000
  307. Plane1:    dc.w    $00e0,$0006,$00e2,$0000
  308. Plane2:    dc.w    $00e4,$0006,$00e6,$0000
  309. Plane3:    dc.w    $00e8,$0006,$00ea,$0000
  310. Plane4:    dc.w    $00ec,$0006,$00ee,$0000
  311.     ;dc.w    $0180,$008c
  312.     dc.w    $0182,$0fff
  313.     dc.w    $0184,$0420
  314.     dc.w    $0186,$0832
  315.     dc.w    $0188,$0943
  316.     dc.w    $018a,$0b42
  317.     dc.w    $018c,$0c65
  318.     dc.w    $018e,$0e87
  319.     dc.w    $0190,$0000
  320.     dc.w    $0192,$0fca
  321.     dc.w    $0194,$0b63
  322.     dc.w    $0196,$0d84
  323.     dc.w    $0198,$0e95
  324.     dc.w    $019a,$0fa4
  325.     dc.w    $019c,$0fb7
  326.     dc.w    $019e,$0000
  327.     dc.w    $01a2,$0333
  328.     dc.w    $01a4,$0777
  329.     dc.w    $01aa,$0bbb
  330.     dc.w    $01ac,$0fff
  331.     dc.w    $2901,$ff00,$0100,$4200
  332.     dc.w    $6401,$ff00,$0100,$0000
  333.     dc.w    $0192,$0a54,$00e0,$0006
  334.     dc.w    $00e2,$0000
  335.     dc.w    $008e,$2c81
  336.     dc.w    $0090,$2cc1
  337.     dc.w    $0100,$1200
  338. sine    dc.w    $00e0,$0000,$00e2,$0000
  339.     dc.w    $e101,$ff00,$0180,$0999
  340.     dc.w    $0100,$0200
  341.     dc.w    $e201,$ff00,$0180,$0333
  342.     dc.w    $e301,$ff00,$0180,$0000
  343.     dc.w    $0182,$0300
  344.     dc.w    $0192,$0a50
  345.     dc.w    $0100,$2600
  346.     dc.w    $0102,$0001
  347.     dc.w    $00e0,$0006,$00e2
  348. VS1:    dc.w    $1cc0
  349.     dc.w    $00e4,$0006,$00e6
  350. VS2:    dc.w    $1ce8
  351.     dc.w    $e401,$ff00,$0182,$0400
  352.     dc.w    $0192,$0b60
  353.     dc.w    $e501,$ff00,$0182,$0500
  354.     dc.w    $0192,$0c71
  355.     dc.w    $e601,$ff00,$0182,$0610
  356.     dc.w    $0192,$0d82
  357.     dc.w    $e601,$ff00,$0182,$0721
  358.     dc.w    $0192,$0e93
  359.     dc.w    $e601,$ff00,$0182,$0832
  360.     dc.w    $0192,$0fa4
  361.     dc.w    $ffe1,$fffe
  362.     dc.w    $2f01,$ff00,$0182,$0721
  363.     dc.w    $0192,$0e93
  364.     dc.w    $3001,$ff00,$0182,$0610
  365.     dc.w    $0192,$0d82
  366.     dc.w    $3101,$ff00,$0182,$0500
  367.     dc.w    $0192,$0c71
  368.     dc.w    $3201,$ff00,$0182,$0400
  369.     dc.w    $0192,$0b60
  370.     dc.w    $3301,$ff00,$0182,$0300
  371.     dc.w    $0192,$0a50
  372.     dc.w    $3401,$ff00,$0100,$0200
  373.     dc.w    $00ec,$0006,$00ee,$5938
  374.     dc.w    $00f0,$0006,$00f2,$69a0
  375.     dc.w    $ffff,$fffe
  376.  
  377. A set 0
  378.     Rept    320
  379.     Dc.w    A*40
  380. A set A+1
  381.     Endr
  382.  
  383. A set 0
  384. Bits
  385.     Rept    320
  386.     Dc.w    ((A&$f)*$1000)+$bca
  387. A set A+1
  388.     Endr
  389.  
  390. Size
  391. A set 0
  392.     Rept    320
  393.     Dc.w    (A*64)+2
  394. A set A+1
  395.     Endr
  396.  
  397. Logo:
  398.     incbin    df2:Logo.raw
  399. Sprite1:
  400.     include    df2:SpriteData1
  401. Sprite2:
  402.     include    df2:SpriteData2
  403. Sprite3:
  404.     include    df2:SpriteData3
  405. Sprite4:
  406.     include    df2:SpriteData4
  407.  
  408.  
  409. ;­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­
  410. ;­   NoisetrackerV2.0 Normal replay   ­
  411. ;­     Uses registers d0-d3/a0-a5     ­
  412. ;­ Mahoney & Kaktus - (C) E.A.S. 1990 ­
  413. ;­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­
  414.  
  415.  
  416. mt_init:movem.l    d0-d2/a0-a2,-(a7)
  417.     lea    mt_data,a0
  418.     lea    $3b8(a0),a1
  419.     moveq    #$7f,d0
  420.     moveq    #0,d2
  421.     moveq    #0,d1
  422. mt_lop2:move.b    (a1)+,d1
  423.     cmp.b    d2,d1
  424.     ble.s    mt_lop
  425.     move.l    d1,d2
  426. mt_lop:    dbf    d0,mt_lop2
  427.     addq.b    #1,d2
  428.  
  429.     asl.l    #8,d2
  430.     asl.l    #2,d2
  431.     lea    4(a1,d2.l),a2
  432.     lea    mt_samplestarts(pc),a1
  433.     add.w    #42,a0
  434.     moveq    #$1e,d0
  435. mt_lop3:clr.l    (a2)
  436.     move.l    a2,(a1)+
  437.     moveq    #0,d1
  438.     move.w    (a0),d1
  439.     asl.l    #1,d1
  440.     add.l    d1,a2
  441.     add.l    #$1e,a0
  442.     dbf    d0,mt_lop3
  443.  
  444.     or.b    #2,$bfe001
  445.     move.b    #6,mt_speed
  446.     moveq    #0,d0
  447.     lea    $dff000,a0
  448.     move.w    d0,$a8(a0)
  449.     move.w    d0,$b8(a0)
  450.     move.w    d0,$c8(a0)
  451.     move.w    d0,$d8(a0)
  452.     clr.b    mt_songpos
  453.     clr.b    mt_counter
  454.     clr.w    mt_pattpos
  455.     movem.l    (a7)+,d0-d2/a0-a2
  456.     rts
  457.  
  458. mt_end:    clr.w    $dff0a8
  459.     clr.w    $dff0b8
  460.     clr.w    $dff0c8
  461.     clr.w    $dff0d8
  462.     move.w    #$f,$dff096
  463.     rts
  464.  
  465.  
  466. mt_music:
  467.     movem.l    d0-d3/a0-a5,-(a7)
  468.     lea    mt_data,a0
  469.     addq.b    #1,mt_counter
  470.     move.b    mt_counter(pc),d0
  471.     cmp.b    mt_speed(pc),d0
  472.     blt    mt_nonew
  473.     clr.b    mt_counter
  474.  
  475.     lea    mt_data,a0
  476.     lea    $c(a0),a3
  477.     lea    $3b8(a0),a2
  478.     lea    $43c(a0),a0
  479.  
  480.     moveq    #0,d0
  481.     moveq    #0,d1
  482.     move.b    mt_songpos(pc),d0
  483.     move.b    (a2,d0.w),d1
  484.     lsl.w    #8,d1
  485.     lsl.w    #2,d1
  486.     add.w    mt_pattpos(pc),d1
  487.     clr.w    mt_dmacon
  488.  
  489.     lea    $dff0a0,a5
  490.     lea    mt_voice1(pc),a4
  491.     bsr    mt_playvoice
  492.     addq.l    #4,d1
  493.     lea    $dff0b0,a5
  494.     lea    mt_voice2(pc),a4
  495.     bsr    mt_playvoice
  496.     addq.l    #4,d1
  497.     lea    $dff0c0,a5
  498.     lea    mt_voice3(pc),a4
  499.     bsr    mt_playvoice
  500.     addq.l    #4,d1
  501.     lea    $dff0d0,a5
  502.     lea    mt_voice4(pc),a4
  503.     bsr    mt_playvoice
  504.  
  505.     move.w    mt_dmacon(pc),d0
  506.     beq.s    mt_nodma
  507.  
  508.     bsr    mt_wait
  509.     or.w    #$8000,d0
  510.     move.w    d0,$dff096
  511.     bsr    mt_wait
  512. mt_nodma:
  513.     lea    mt_voice1(pc),a4
  514.     lea    $dff000,a3
  515.     move.l    $a(a4),$a0(a3)
  516.     move.w    $e(a4),$a4(a3)
  517.     move.l    $a+$1c(a4),$b0(a3)
  518.     move.w    $e+$1c(a4),$b4(a3)
  519.     move.l    $a+$38(a4),$c0(a3)
  520.     move.w    $e+$38(a4),$c4(a3)
  521.     move.l    $a+$54(a4),$d0(a3)
  522.     move.w    $e+$54(a4),$d4(a3)
  523.  
  524.     add.w    #$10,mt_pattpos
  525.     cmp.w    #$400,mt_pattpos
  526.     bne.s    mt_exit
  527. mt_next:clr.w    mt_pattpos
  528.     clr.b    mt_break
  529.     addq.b    #1,mt_songpos
  530.     and.b    #$7f,mt_songpos
  531.     move.b    -2(a2),d0
  532.     cmp.b    mt_songpos(pc),d0
  533.     bne.s    mt_exit
  534.     move.b    -1(a2),mt_songpos
  535. mt_exit:tst.b    mt_break
  536.     bne.s    mt_next
  537.     movem.l    (a7)+,d0-d3/a0-a5
  538.     rts
  539.  
  540. mt_wait:moveq    #3,d3
  541. mt_wai2:move.b    $dff006,d2
  542. mt_wai3:cmp.b    $dff006,d2
  543.     beq.s    mt_wai3
  544.     dbf    d3,mt_wai2
  545.     moveq    #8,d2
  546. mt_wai4:dbf    d2,mt_wai4
  547.     rts
  548.  
  549. mt_nonew:
  550.     lea    mt_voice1(pc),a4
  551.     lea    $dff0a0,a5
  552.     bsr    mt_com
  553.     lea    mt_voice2(pc),a4
  554.     lea    $dff0b0,a5
  555.     bsr    mt_com
  556.     lea    mt_voice3(pc),a4
  557.     lea    $dff0c0,a5
  558.     bsr    mt_com
  559.     lea    mt_voice4(pc),a4
  560.     lea    $dff0d0,a5
  561.     bsr    mt_com
  562.     bra.s    mt_exit
  563.  
  564. mt_mulu:
  565.     dc.w $000,$01e,$03c,$05a,$078,$096,$0b4,$0d2,$0f0,$10e,$12c,$14a
  566.     dc.w $168,$186,$1a4,$1c2,$1e0,$1fe,$21c,$23a,$258,$276,$294,$2b2
  567.     dc.w $2d0,$2ee,$30c,$32a,$348,$366,$384,$3a2
  568.  
  569. mt_playvoice:
  570.     move.l    (a0,d1.l),(a4)
  571.     moveq    #0,d2
  572.     move.b    2(a4),d2
  573.     lsr.b    #4,d2
  574.     move.b    (a4),d0
  575.     and.b    #$f0,d0
  576.     or.b    d0,d2
  577.     beq.s    mt_oldinstr
  578.  
  579.     lea    mt_samplestarts-4(pc),a1
  580.     asl.w    #2,d2
  581.     move.l    (a1,d2.l),4(a4)
  582.     lsr.w    #1,d2
  583.     move.w    mt_mulu(pc,d2.w),d2
  584.     move.w    (a3,d2.w),8(a4)
  585.     move.w    2(a3,d2.w),$12(a4)
  586.     moveq    #0,d3
  587.     move.w    4(a3,d2.w),d3
  588.     tst.w    d3
  589.     beq.s    mt_noloop
  590.     move.l    4(a4),d0
  591.     asl.w    #1,d3
  592.     add.l    d3,d0
  593.     move.l    d0,$a(a4)
  594.     move.w    4(a3,d2.w),d0
  595.     add.w    6(a3,d2.w),d0
  596.     move.w    d0,8(a4)
  597.     bra.s    mt_hejaSverige
  598. mt_noloop:
  599.     move.l    4(a4),d0
  600.     add.l    d3,d0
  601.     move.l    d0,$a(a4)
  602. mt_hejaSverige:
  603.     move.w    6(a3,d2.w),$e(a4)
  604.     moveq    #0,d0
  605.     move.b    $13(a4),d0
  606.     move.w    d0,8(a5)
  607.  
  608. mt_oldinstr:
  609.     move.w    (a4),d0
  610.     and.w    #$fff,d0
  611.     beq    mt_com2
  612.     tst.w    8(a4)
  613.     beq.s    mt_stopsound
  614.     tst.b    $12(a4)
  615.     bne.s    mt_stopsound
  616.     move.b    2(a4),d0
  617.     and.b    #$f,d0
  618.     cmp.b    #5,d0
  619.     beq.s    mt_setport
  620.     cmp.b    #3,d0
  621.     beq.s    mt_setport
  622.  
  623.     move.w    (a4),$10(a4)
  624.     and.w    #$fff,$10(a4)
  625.     move.w    $1a(a4),$dff096
  626.     clr.b    $19(a4)
  627.  
  628.     move.l    4(a4),(a5)
  629.     move.w    8(a4),4(a5)
  630.     move.w    $10(a4),6(a5)
  631.  
  632.     move.w    $1a(a4),d0    ;dmaset
  633.     or.w    d0,mt_dmacon
  634.     bra    mt_com2
  635.  
  636. mt_stopsound:
  637.     move.w    $1a(a4),$dff096
  638.     bra    mt_com2
  639.  
  640. mt_setport:
  641.     move.w    (a4),d2
  642.     and.w    #$fff,d2
  643.     move.w    d2,$16(a4)
  644.     move.w    $10(a4),d0
  645.     clr.b    $14(a4)
  646.     cmp.w    d0,d2
  647.     beq.s    mt_clrport
  648.     bge    mt_com2
  649.     move.b    #1,$14(a4)
  650.     bra    mt_com2
  651. mt_clrport:
  652.     clr.w    $16(a4)
  653.     rts
  654.  
  655. mt_port:move.b    3(a4),d0
  656.     beq.s    mt_port2
  657.     move.b    d0,$15(a4)
  658.     clr.b    3(a4)
  659. mt_port2:
  660.     tst.w    $16(a4)
  661.     beq.s    mt_rts
  662.     moveq    #0,d0
  663.     move.b    $15(a4),d0
  664.     tst.b    $14(a4)
  665.     bne.s    mt_sub
  666.     add.w    d0,$10(a4)
  667.     move.w    $16(a4),d0
  668.     cmp.w    $10(a4),d0
  669.     bgt.s    mt_portok
  670.     move.w    $16(a4),$10(a4)
  671.     clr.w    $16(a4)
  672. mt_portok:
  673.     move.w    $10(a4),6(a5)
  674. mt_rts:    rts
  675.  
  676. mt_sub:    sub.w    d0,$10(a4)
  677.     move.w    $16(a4),d0
  678.     cmp.w    $10(a4),d0
  679.     blt.s    mt_portok
  680.     move.w    $16(a4),$10(a4)
  681.     clr.w    $16(a4)
  682.     move.w    $10(a4),6(a5)
  683.     rts
  684.  
  685. mt_sin:
  686.     dc.b $00,$18,$31,$4a,$61,$78,$8d,$a1,$b4,$c5,$d4,$e0,$eb,$f4,$fa,$fd
  687.     dc.b $ff,$fd,$fa,$f4,$eb,$e0,$d4,$c5,$b4,$a1,$8d,$78,$61,$4a,$31,$18
  688.  
  689. mt_vib:    move.b    $3(a4),d0
  690.     beq.s    mt_vib2
  691.     move.b    d0,$18(a4)
  692.  
  693. mt_vib2:move.b    $19(a4),d0
  694.     lsr.w    #2,d0
  695.     and.w    #$1f,d0
  696.     moveq    #0,d2
  697.     move.b    mt_sin(pc,d0.w),d2
  698.     move.b    $18(a4),d0
  699.     and.w    #$f,d0
  700.     mulu    d0,d2
  701.     lsr.w    #7,d2
  702.     move.w    $10(a4),d0
  703.     tst.b    $19(a4)
  704.     bmi.s    mt_vibsub
  705.     add.w    d2,d0
  706.     bra.s    mt_vib3
  707. mt_vibsub:
  708.     sub.w    d2,d0
  709. mt_vib3:move.w    d0,6(a5)
  710.     move.b    $18(a4),d0
  711.     lsr.w    #2,d0
  712.     and.w    #$3c,d0
  713.     add.b    d0,$19(a4)
  714.     rts
  715.  
  716.  
  717. mt_arplist:
  718.     dc.b 0,1,2,0,1,2,0,1,2,0,1,2,0,1,2,0,1,2,0,1,2,0,1,2,0,1,2,0,1,2,0,1
  719.  
  720. mt_arp:    moveq    #0,d0
  721.     move.b    mt_counter(pc),d0
  722.     move.b    mt_arplist(pc,d0.w),d0
  723.     beq.s    mt_arp0
  724.     cmp.b    #2,d0
  725.     beq.s    mt_arp2
  726. mt_arp1:moveq    #0,d0
  727.     move.b    3(a4),d0
  728.     lsr.b    #4,d0
  729.     bra.s    mt_arpdo
  730. mt_arp2:moveq    #0,d0
  731.     move.b    3(a4),d0
  732.     and.b    #$f,d0
  733. mt_arpdo:
  734.     asl.w    #1,d0
  735.     move.w    $10(a4),d1
  736.     and.w    #$fff,d1
  737.     lea    mt_periods(pc),a0
  738.     moveq    #$24,d2
  739. mt_arp3:cmp.w    (a0)+,d1
  740.     bge.s    mt_arpfound
  741.     dbf    d2,mt_arp3
  742. mt_arp0:move.w    $10(a4),6(a5)
  743.     rts
  744. mt_arpfound:
  745.     move.w    -2(a0,d0.w),6(a5)
  746.     rts
  747.  
  748. mt_normper:
  749.     move.w    $10(a4),6(a5)
  750.     rts
  751.  
  752. mt_com:    move.w    2(a4),d0
  753.     and.w    #$fff,d0
  754.     beq.s    mt_normper
  755.     move.b    2(a4),d0
  756.     and.b    #$f,d0
  757.     tst.b    d0
  758.     beq.s    mt_arp
  759.     cmp.b    #1,d0
  760.     beq.s    mt_portup
  761.     cmp.b    #2,d0
  762.     beq.s    mt_portdown
  763.     cmp.b    #3,d0
  764.     beq    mt_port
  765.     cmp.b    #4,d0
  766.     beq    mt_vib
  767.     cmp.b    #5,d0
  768.     beq.s    mt_volport
  769.     cmp.b    #6,d0
  770.     beq.s    mt_volvib
  771.     move.w    $10(a4),6(a5)
  772.     cmp.b    #$a,d0
  773.     beq.s    mt_volslide
  774.     rts
  775.  
  776. mt_portup:
  777.     moveq    #0,d0
  778.     move.b    3(a4),d0
  779.     sub.w    d0,$10(a4)
  780.     move.w    $10(a4),d0
  781.     cmp.w    #$71,d0
  782.     bpl.s    mt_portup2
  783.     move.w    #$71,$10(a4)
  784. mt_portup2:
  785.     move.w    $10(a4),6(a5)
  786.     rts
  787.  
  788. mt_portdown:
  789.     moveq    #0,d0
  790.     move.b    3(a4),d0
  791.     add.w    d0,$10(a4)
  792.     move.w    $10(a4),d0
  793.     cmp.w    #$358,d0
  794.     bmi.s    mt_portdown2
  795.     move.w    #$358,$10(a4)
  796. mt_portdown2:
  797.     move.w    $10(a4),6(a5)
  798.     rts
  799.  
  800. mt_volvib:
  801.      bsr    mt_vib2
  802.      bra.s    mt_volslide
  803. mt_volport:
  804.      bsr    mt_port2
  805.  
  806. mt_volslide:
  807.     moveq    #0,d0
  808.     move.b    3(a4),d0
  809.     lsr.b    #4,d0
  810.     beq.s    mt_vol3
  811.     add.b    d0,$13(a4)
  812.     cmp.b    #$40,$13(a4)
  813.     bmi.s    mt_vol2
  814.     move.b    #$40,$13(a4)
  815. mt_vol2:moveq    #0,d0
  816.     move.b    $13(a4),d0
  817.     move.w    d0,8(a5)
  818.     rts
  819.  
  820. mt_vol3:move.b    3(a4),d0
  821.     and.b    #$f,d0
  822.     sub.b    d0,$13(a4)
  823.     bpl.s    mt_vol4
  824.     clr.b    $13(a4)
  825. mt_vol4:moveq    #0,d0
  826.     move.b    $13(a4),d0
  827.     move.w    d0,8(a5)
  828.     rts
  829.  
  830. mt_com2:move.b    $2(a4),d0
  831.     and.b    #$f,d0
  832.     cmp.b    #$e,d0
  833.     beq.s    mt_filter
  834.     cmp.b    #$d,d0
  835.     beq.s    mt_pattbreak
  836.     cmp.b    #$b,d0
  837.     beq.s    mt_songjmp
  838.     cmp.b    #$c,d0
  839.     beq.s    mt_setvol
  840.     cmp.b    #$f,d0
  841.     beq.s    mt_setspeed
  842.     rts
  843.  
  844. mt_filter:
  845.     move.b    3(a4),d0
  846.     and.b    #1,d0
  847.     asl.b    #1,d0
  848.     and.b    #$fd,$bfe001
  849.     or.b    d0,$bfe001
  850.     rts
  851.  
  852. mt_pattbreak:
  853.     move.b    #1,mt_break
  854.     rts
  855.  
  856. mt_songjmp:
  857.     move.b    #1,mt_break
  858.     move.b    3(a4),d0
  859.     subq.b    #1,d0
  860.     move.b    d0,mt_songpos
  861.     rts
  862.  
  863. mt_setvol:
  864.     cmp.b    #$40,3(a4)
  865.     bls.s    mt_sv2
  866.     move.b    #$40,3(a4)
  867. mt_sv2:    moveq    #0,d0
  868.     move.b    3(a4),d0
  869.     move.b    d0,$13(a4)
  870.     move.w    d0,8(a5)
  871.     rts
  872.  
  873. mt_setspeed:
  874.     moveq    #0,d0
  875.     move.b    3(a4),d0
  876.     cmp.b    #$1f,d0
  877.     bls.s    mt_sp2
  878.     moveq    #$1f,d0
  879. mt_sp2:    tst.w    d0
  880.     bne.s    mt_sp3
  881.     moveq    #1,d0
  882. mt_sp3:    move.b    d0,mt_speed
  883.     rts
  884.  
  885. mt_periods:
  886.     dc.w $0358,$0328,$02fa,$02d0,$02a6,$0280,$025c,$023a,$021a,$01fc,$01e0
  887.     dc.w $01c5,$01ac,$0194,$017d,$0168,$0153,$0140,$012e,$011d,$010d,$00fe
  888.     dc.w $00f0,$00e2,$00d6,$00ca,$00be,$00b4,$00aa,$00a0,$0097,$008f,$0087
  889.     dc.w $007f,$0078,$0071,$0000
  890.  
  891. mt_speed:    dc.b    6
  892. mt_counter:    dc.b    0
  893. mt_pattpos:    dc.w    0
  894. mt_songpos:    dc.b    0
  895. mt_break:    dc.b    0
  896. mt_dmacon:    dc.w    0
  897. mt_samplestarts:dcb.l    $1f,0
  898. mt_voice1:    dcb.w    13,0
  899.         dc.w    1
  900. mt_voice2:    dcb.w    13,0
  901.         dc.w    2
  902. mt_voice3:    dcb.w    13,0
  903.         dc.w    4
  904. mt_voice4:    dcb.w    13,0
  905.         dc.w    8
  906. sinscroll:
  907.     lea showplane,a0        ; visible bitplane
  908. blitready:
  909.     btst #14,$dff002        
  910.     bne.s blitready            ; wait till blitter ready
  911.     cmp.b #$ff,$dff006
  912.     bne.s blitready
  913.     move.l a0,$dff054        ; source address
  914.     move.l a0,$dff050        ; destination address
  915.     clr.l $dff044            ; no FWM/LWM (see hardware manual)
  916.     clr.l $dff064            ; no MODULO (see hardware manual)
  917.  
  918.     move.w #%100000000,$dff040     ; Enable DMA channel D, nothing
  919.                     ; else, no minterms active. 
  920.     clr.w $dff042            ; nothing set in BLTCON1
  921.     move.w #%111100010101,$dff058    ; Window size = 21 words wide
  922.                                ; 60 lines deep
  923.     move.l sinpt,a3
  924.     subq.l #1,a3
  925.     move.b (a3),d0
  926.     cmp.b #255,d0
  927.     bne.s notendofsine
  928.     lea sintabend(pc),a3
  929. notendofsine:
  930.     move.l a3,sinpt
  931.  
  932.     moveq #19,d0
  933.     lea scrollplane,a0
  934.     lea showplane,a1
  935.  
  936. sloop3:
  937.  
  938.     bsr getsinval
  939.  
  940. blitready2:
  941.     btst #14,$dff002
  942.     bne.s blitready2
  943.  
  944.     move.l a0,$dff050
  945.     move.l a2,$dff054
  946.     move.l #$f000f000,$dff044
  947.     move.w #40,$dff064
  948.     move.w #40,$dff066
  949.     move.w #%0000100111110000,$dff040
  950.     clr.w $dff042
  951.     move.w #%100000000001,$dff058
  952.  
  953.     bsr getsinval
  954.  
  955. zonk2:
  956.     btst #14,$dff002
  957.     bne.s zonk2
  958.  
  959.     move.l a0,$dff050
  960.     move.l a2,$dff054
  961.     move.l a2,$dff04c
  962.     move.l #$f000f00,$dff044
  963.     move.w #40,$dff064
  964.     move.w #40,$dff066
  965.     move.w #40,$dff062
  966.     move.w #%0000110111111100,$dff040
  967.      clr.w $dff042
  968.     move.w #%100000000001,$dff058
  969.  
  970.     bsr getsinval
  971. zonk3:
  972.     btst #14,$dff002
  973.     bne.s zonk3
  974.  
  975.     move.l a0,$dff050
  976.     move.l a2,$dff054
  977.     move.l a2,$dff04c
  978.     move.l #$f000f0,$dff044
  979.     move.w #40,$dff064
  980.     move.w #40,$dff066
  981.     move.w #40,$dff062
  982.     move.w #%0000110111111100,$dff040
  983.     clr.w $dff042
  984.     move.w #%100000000001,$dff058
  985.  
  986.     bsr getsinval
  987. zonk4:
  988.     btst #14,$dff002
  989.     bne.s zonk4
  990.     move.l a0,$dff050
  991.     move.l a2,$dff054
  992.     move.l a2,$dff04c
  993.     move.l #$f000f,$dff044
  994.     move.w #40,$dff064
  995.     move.w #40,$dff066
  996.     move.w #40,$dff062
  997.     move.w #%0000110111111100,$dff040
  998.     clr.w $dff042
  999.     move.w #%100000000001,$dff058
  1000.  
  1001.  
  1002.  
  1003.     addq.l #2,a0
  1004. LOAD:    addq.l #2,a1
  1005.     dbra d0,sloop3
  1006.  
  1007. rts
  1008.  
  1009. getsinval:
  1010.     moveq #0,d1
  1011.     move.b (a3)+,d1
  1012.     move.b (a3),d2
  1013.     cmp.b #255,d2
  1014.     bne okyar
  1015.     move.l #sintab,a3
  1016. okyar:
  1017.  
  1018.     lsr.b #1,d1
  1019.  
  1020.     bclr #0,d1
  1021.  
  1022.  
  1023.     mulu #21,d1
  1024.  
  1025.     move.l a1,a2
  1026.     add.l d1,a2
  1027.  
  1028.     rts
  1029. scrolly: 
  1030.     move.b pause,d0
  1031.     cmp.b #0,d0
  1032.     beq gopast
  1033.     sub.b #1,d0
  1034.     move.b d0,pause
  1035.     bra gopast2
  1036. gopast:
  1037.     move.l #scrollplane,a0
  1038.     move.l #scrollplane+2,a1
  1039. blitready3:
  1040.     btst #14,$dff002
  1041.     bne.s blitready3
  1042.     move.l a0,$dff054
  1043.     move.l a1,$dff050
  1044.     move.l #-1,$dff044
  1045.     clr.l $dff064
  1046.     move.w #%1100100111110000,$dff040
  1047.     clr.w $dff042
  1048.     move.w #%101000010111,$dff058
  1049. gopast2:
  1050.     bsr sinscroll
  1051.     move.b pause,d0
  1052.     cmp.b #0,d0
  1053.     bne iuo
  1054.  
  1055.     move.b countdown,d0
  1056.     sub.b #1,d0
  1057.     cmp.b #0,d0
  1058.     beq mfc
  1059.     move.b d0,countdown
  1060. iuo:
  1061.     rts
  1062.     
  1063. countdown:
  1064.     dc.b 4,0
  1065.  
  1066.  
  1067. sinpt:     dc.l sintabend        
  1068. sinpt2: dc.l sintab2
  1069. mesptr    dc.l message
  1070.  
  1071. sintab:
  1072.  
  1073.     dc.b $3C,$3F,$42,$46,$49,$4C,$50,$53,$56,$59
  1074.     dc.b $5C,$5F,$61,$64,$67,$69,$6B,$6D,$6F,$71
  1075.     dc.b $72,$73,$75,$76,$76,$77,$77,$77,$77,$77
  1076.     dc.b $77,$76,$76,$75,$73,$72,$71,$6F,$6D,$6B
  1077.     dc.b $69,$67,$64,$61,$5F,$5C,$59,$56,$53,$50
  1078.     dc.b $4C,$49,$46,$42,$3F,$3C,$38,$35,$31,$2E
  1079.     dc.b $2B,$27,$24,$21,$1E,$1B,$18,$16,$13,$10
  1080.     dc.b $E,$C,$A,$8,$6,$5,$4,$2,$1,$1
  1081.     dc.b $0,$0,$0,$0,$0,$0,$1,$1,$2,$4
  1082.     dc.b $5,$6,$8,$A,$C,$E,$10,$13,$16,$18
  1083.     dc.b $1B,$1E,$21,$24,$27,$2B,$2E,$31,$35
  1084.  
  1085. sintabend:
  1086.  dc.b $38,255
  1087.  
  1088.  
  1089. sintab2:
  1090.  
  1091.  dc.b $2D
  1092.  dc.b $31,$2D,$29,$26,$22,$1F,$1C,$19,$15
  1093.  dc.b $13,$10,$D,$B,$9,$7,$5,$3,$2,$1,$1,$0,$0,$0,$1,$1,$2,$3,$5,$7,$9
  1094.  dc.b $B,$D,$10,$13,$15,$19,$1C,$1F,$22,$26,$29,$ff
  1095.  even
  1096. pause:     dc.b 0
  1097. sinmodulo:
  1098.     dc.b 0
  1099.  
  1100.      even
  1101. mfc:
  1102.     move.b #4,countdown
  1103.     clr.w scrollplane+40
  1104.     clr.w scrollplane+82
  1105.     move.l #scrollplane+124,a1
  1106.     bsr charaddress
  1107.  
  1108.     moveq #15,d0
  1109. zonkin:
  1110.     move.w (a0),(a1)
  1111.     lea 40(a0),a0
  1112.     lea 42(a1),a1
  1113.     dbf d0,zonkin
  1114.  
  1115.     rts
  1116. CHARADDRESS:
  1117.     move.l mesptr,a0
  1118.     moveq #0,d0
  1119.     move.l d0,d1
  1120.     move.l d0,d2
  1121.     move.b (a0)+,d0
  1122.     cmp.b #$0a,d0
  1123.     bne wizy
  1124.     move.b #32,d0
  1125. wizy:
  1126.     cmp.b #255,d0
  1127.     bne wazy
  1128.     move.l #message,a0
  1129.     move.b #32,d0
  1130. wazy:
  1131.     cmp.b #255,d0
  1132.     beq w1
  1133.     bra wozy
  1134. w1:
  1135.     move.b #32,d0
  1136.     move.b #$60,pause
  1137.     bra    wozy
  1138. wozy:
  1139.  
  1140.     move.l a0,mesptr
  1141.     sub.b #32,d0 
  1142.      moveq #0,d1
  1143.      divu #20,d0          ; 20 chars on each line
  1144.      move.b d0,d1 
  1145.      clr.w d0
  1146.      swap d0  
  1147.     move.l #fnt2,a0
  1148.     mulu #640,d1
  1149.     add.l d0,d0
  1150.     add.l d0,a0
  1151.     add.l d1,a0
  1152.  
  1153.     rts
  1154.  
  1155. blitclear:
  1156.  lea showplane2,a0
  1157.  blitfin1:
  1158.  btst #14,$dff002
  1159.  bne.s blitfin1
  1160.  move.l a0,$dff054
  1161.  move.l a0,$dff050
  1162.  clr.l $dff044
  1163.  clr.l $dff064
  1164.  
  1165.  move.w #%100000000,$dff040
  1166.  clr.w $dff042
  1167.  move.w #%1011010010100,$dff058
  1168.  rts
  1169. check1: dc.w 0
  1170. even
  1171.  
  1172. showplane:     ds.b 6000
  1173. showplane2:    ds.b 6000
  1174. scrollplane:     ds.b 2500
  1175.  
  1176. fnt2:        incbin "df0:f"
  1177.  
  1178. message:
  1179.  dc.b  "  INNERCITY     ARE BACK AGAIN !!!!",255,"    "
  1180.  DC.B  " THIS TIME WE PRESENT .........."
  1181.  DC.B  " THE INNERCITY  MEGA COMPACT DISK ",255," WITH GRAPHICS BY      CRAZY LEGS      ",255,"   AND        FAST EDDIE    ",255
  1182.  DC.B  " MUSIC BY       RICK         ",255," AND          CASP          ",255  
  1183.  DC.B  "               GREETS GO OUT TO : RANDOM , QUARTEX , MAYHEM , ACIDFORCE , THR , SLIPSTREAM , ANARCHY U.K  AND ALL THE OTHERS WE KNOW ........ OHH BY THE WAY THE MUSIC WAS BY RICK OF INNERCITY .......... ",255
  1184.  ;                                                        
  1185.  dc.b ".......          "
  1186.  dc.b 255
  1187.     even
  1188.  
  1189.  
  1190. Chars:
  1191.     Incbin    df2:Tetris.font
  1192.  
  1193. mt_data:
  1194.         dc.b    0;incbin    ReeboKVectors:mod.CrackJunkadelia
  1195.  
  1196.